package com.bosssoft.cloud.wechat.core.controller;

import com.bosssoft.cloud.wechat.core.api.WxOAuth2Service;
import com.bosssoft.cloud.wechat.core.bean.oauth2.WxOAuth2AccessToken;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

/**
 * 微信网页授权
 * 参考文档：
 * https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html
 *
 * @author wcy create on 2021/6/23 10:51 上午
 */
@Slf4j
@RestController
@RequestMapping("oauth2")
public class OAuth2Controller {
    @Autowired
    private WxOAuth2Service wxOAuth2Service;

    /**
     * 网页授权
     *
     * @param code  code作为换取access_token的票据，每次用户授权带上的code将不一样，code只能使用一次，5分钟未被使用自动过期。
     * @param state 返回码。错误返回码见微信官方文档。暂未使用但保留。勿删
     * @return 用户身份信息
     */
    @GetMapping("oauth2")
    public String oauth2(
            @RequestParam String code,
            @RequestParam(name = "state", required = false) String state
    ) {
        WxOAuth2AccessToken token = wxOAuth2Service.getAccessToken(code);
        return token.toString();
    }
}
